WebViewController 是一个用于显示和交互网页内容的控制器。它允许你在脚本中加载 HTML、展示 Web 页面、执行 JavaScript 脚本,并与页面中的 JavaScript 进行消息通信。你可以将它作为浏览器使用,也可以嵌入应用功能页面。
WebViewControllershouldAllowRequest?: (request) => Promise<boolean>一个可选回调,用于决定是否允许或拦截 WebView 发起的请求。每次加载资源之前都会调用此函数,例如导航到新页面或提交表单时。
适用于拦截跳转行为、自定义安全策略或过滤广告等不需要的请求。
回调函数接收一个 request 对象,包含以下字段:
url: string
请求的完整 URL。
method: string
HTTP 方法,如 GET、POST。
body?: Data | null
可选,请求体数据(通常用于 POST 请求)。
headers: Record<string, string>
请求头信息。
timeoutInterval: number
请求的超时时间(单位为秒)。
navigationType: "linkActivated" | "reload" | "backForward" | "formResubmitted" | "formSubmitted" | "other"
触发导航的上下文。
一个 Promise<boolean>,用于指示是否允许该请求:
true:允许请求继续false:阻止该请求loadURL(url: string): Promise<boolean>加载指定 URL 的网页内容。
参数:
url:要加载的网页完整地址。返回:Promise<boolean> — 加载成功返回 true。
loadHTML(html: string, baseURL?: string): Promise<boolean>加载原始 HTML 字符串内容。
参数:
html:要渲染的 HTML 字符串。baseURL(可选):用于解析相对路径的基础 URL。返回:Promise<boolean> — 加载成功返回 true。
loadData(data: Data, mimeType: string, encoding: string, baseURL: string): Promise<boolean>加载原始数据作为网页内容。
参数:
data:要加载的二进制内容。mimeType:内容的 MIME 类型,例如 "text/html"。encoding:字符编码,例如 "utf-8"。baseURL:用于解析相对路径的基础地址。返回:Promise<boolean>
waitForLoad(): Promise<boolean>等待 WebView 加载完成。
Promise<boolean>getHTML(): Promise<string | null>获取当前页面的 HTML 内容。
Promise<string | null>evaluateJavaScript<T = any>(javascript: string): Promise<T>在 WebView 中执行指定的 JavaScript 代码。
参数:
javascript:要执行的 JavaScript 代码字符串。若希望返回值,必须在代码中使用 return。返回:Promise<T> — JavaScript 执行结果将作为 Promise 的值返回。
或:
addScriptMessageHandler<P = any, R = any>(name: string, handler: (params?: P) => R): Promise<void>添加一个脚本消息处理器,可在网页中通过 JavaScript 调用,并接收原生代码返回的结果。
参数:
name:消息处理器名称,必须唯一且非空。handler:处理函数,接收来自网页的参数并返回一个值,作为 Promise 的结果回传给网页。返回:Promise<void> — 添加成功后完成。
present(options?: { fullscreen?: boolean, navigationTitle?: string }): Promise<void>以模态窗口形式展示 WebView。
选项:
fullscreen:是否以全屏模式展示。navigationTitle:导航栏标题(可选)。返回:Promise<void>
canGoBack(): Promise<boolean>判断 WebView 是否可以后退。
canGoForward(): Promise<boolean>判断 WebView 是否可以前进。
goBack(): Promise<boolean>返回上一页。
goForward(): Promise<boolean>前进到下一页。
reload(): Promise<void>重新加载当前网页。
dismiss(): void关闭 WebView 页面(若当前正在展示)。
dispose(): void释放 WebView 实例并清理资源。